#include<cstdio>
#include<cstring>
const int N=1100;
int f[2][N][31],v[N],w[N];
int n,m,t,K;
int main()
{
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d%d",&n,&m,&K);
		for(int i=1;i<=n;i++)
			scanf("%d",&v[i]);
		for(int i=1;i<=n;i++)
			scanf("%d",&w[i]);
		memset(f,-0x3f3f3f3f,sizeof(f));
		for(int i=0;i<=m;i++)f[0][i][1]=0;
		for(int i=1;i<=n;i++)
			for(int j=0;j<=m;j++)
			{
				int k1=1,k2=1;
				if(j-w[i]<0)
				{
					for(int c=1;c<=K;c++)f[i%2][j][c]=f[(i-1)%2][j][c];
					continue;
				}
				for(int c=1;c<=K;c++)
				{
					if(f[(i-1)%2][j][k1]==f[(i-1)%2][j-w[i]][k2]+v[i])
					{
						f[i%2][j][c]=f[(i-1)%2][j][k1];
						k1++;k2++;continue;
					}
					if(f[(i-1)%2][j][k1]>f[(i-1)%2][j-w[i]][k2]+v[i])
					{
						f[i%2][j][c]=f[(i-1)%2][j][k1];
						k1++;continue;
					}
					f[i%2][j][c]=f[(i-1)%2][j-w[i]][k2]+v[i];
					k2++;
				}
			}
		printf("%d\n",f[n%2][m][K]>0?f[n%2][m][K]:0);
	}
	return 0;
}
